vulkan: Make the GskVulkanRender struct private
authorBenjamin Otte <otte@redhat.com>
Thu, 8 Dec 2016 16:55:32 +0000 (17:55 +0100)
committerBenjamin Otte <otte@redhat.com>
Fri, 9 Dec 2016 17:35:51 +0000 (18:35 +0100)
gsk/gskvulkanrender.c
gsk/gskvulkanrenderpass.c
gsk/gskvulkanrenderpassprivate.h
gsk/gskvulkanrenderprivate.h

index 2cf99ac3186c00f21574463c6418efd8768fce92..571ed2997b5e4ebf13ed161a171573c3a9b1fee7 100644 (file)
 #define ORTHO_NEAR_PLANE        -10000
 #define ORTHO_FAR_PLANE          10000
 
+struct _GskVulkanRender
+{
+  GskRenderer *renderer;
+  GdkVulkanContext *vulkan;
+
+  graphene_matrix_t mvp;
+  int scale_factor;
+  VkExtent2D size;
+  VkRect2D scissor;
+
+  VkCommandPool command_pool;
+  VkCommandBuffer command_buffer;
+
+  GSList *render_passes;
+  GSList *cleanup_images;
+};
+
 static void
 gsk_vulkan_render_compute_mvp (GskVulkanRender *self)
 {
@@ -95,7 +112,7 @@ gsk_vulkan_render_upload (GskVulkanRender *self)
 
   for (l = self->render_passes; l; l = l->next)
     {
-      gsk_vulkan_render_pass_upload (l->data, self);
+      gsk_vulkan_render_pass_upload (l->data, self, self->command_buffer);
     }
 }
 
@@ -219,7 +236,7 @@ gsk_vulkan_render_draw (GskVulkanRender   *self,
 
   for (l = self->render_passes; l; l = l->next)
     {
-      gsk_vulkan_render_pass_draw (l->data, self);
+      gsk_vulkan_render_pass_draw (l->data, self, self->command_buffer);
     }
 
   vkCmdEndRenderPass (self->command_buffer);
@@ -275,3 +292,9 @@ gsk_vulkan_render_free (GskVulkanRender *self)
 
   g_slice_free (GskVulkanRender, self);
 }
+
+GskRenderer *
+gsk_vulkan_render_get_renderer (GskVulkanRender *self)
+{
+  return self->renderer;
+}
index 373bc6c2e7d1a77384b8bded3a80a25e83dee9ca..731498b29c2e07f5d7d7c8f63c6a66f62c304fab 100644 (file)
@@ -64,8 +64,10 @@ gsk_vulkan_render_pass_add_node (GskVulkanRenderPass *self,
 }
 
 static void
-gsk_vulkan_render_pass_upload_fallback (GskVulkanRenderOp *op,
-                                        GskVulkanRender   *render)
+gsk_vulkan_render_pass_upload_fallback (GskVulkanRenderPass *self,
+                                        GskVulkanRenderOp   *op,
+                                        GskVulkanRender     *render,
+                                        VkCommandBuffer      command_buffer)
 {
   graphene_rect_t bounds;
   GskRenderer *fallback;
@@ -80,7 +82,7 @@ gsk_vulkan_render_pass_upload_fallback (GskVulkanRenderOp *op,
   cr = cairo_create (surface);
   cairo_translate (cr, bounds.origin.x, bounds.origin.y);
 
-  fallback = gsk_renderer_create_fallback (render->renderer,
+  fallback = gsk_renderer_create_fallback (gsk_vulkan_render_get_renderer (render),
                                            &bounds,
                                            cr);
   gsk_renderer_render (fallback, op->node, NULL);
@@ -88,8 +90,8 @@ gsk_vulkan_render_pass_upload_fallback (GskVulkanRenderOp *op,
   
   cairo_destroy (cr);
 
-  op->source = gsk_vulkan_image_new_from_data (render->vulkan,
-                                               render->command_buffer,
+  op->source = gsk_vulkan_image_new_from_data (self->vulkan,
+                                               command_buffer,
                                                cairo_image_surface_get_data (surface),
                                                cairo_image_surface_get_width (surface),
                                                cairo_image_surface_get_height (surface),
@@ -102,7 +104,8 @@ gsk_vulkan_render_pass_upload_fallback (GskVulkanRenderOp *op,
 
 void
 gsk_vulkan_render_pass_upload (GskVulkanRenderPass *self,
-                               GskVulkanRender     *render)
+                               GskVulkanRender     *render,
+                               VkCommandBuffer      command_buffer)
 {
   GskVulkanRenderOp *op;
   guint i;
@@ -114,7 +117,7 @@ gsk_vulkan_render_pass_upload (GskVulkanRenderPass *self,
       switch (op->type)
         {
         case GSK_VULKAN_OP_FALLBACK:
-          gsk_vulkan_render_pass_upload_fallback (op, render);
+          gsk_vulkan_render_pass_upload_fallback (self, op, render, command_buffer);
           break;
 
         default:
@@ -217,7 +220,8 @@ gsk_vulkan_render_pass_update_descriptor_sets (GskVulkanRenderPass *self,
 
 void
 gsk_vulkan_render_pass_draw (GskVulkanRenderPass *self,
-                             GskVulkanRender     *render)
+                             GskVulkanRender     *render,
+                             VkCommandBuffer      command_buffer)
 {
   GskVulkanRenderOp *op;
   guint i;
@@ -226,7 +230,7 @@ gsk_vulkan_render_pass_draw (GskVulkanRenderPass *self,
     {
       op = &g_array_index (self->render_ops, GskVulkanRenderOp, i);
 
-      vkCmdDraw (render->command_buffer,
+      vkCmdDraw (command_buffer,
                  op->vertex_count, 1,
                  op->vertex_offset, 0);
     }
index eb22761e9328ab0e08b3676c807a8bad92485182..886e7c2738db1feff3e805d497934befbb07e699 100644 (file)
@@ -18,7 +18,8 @@ void                    gsk_vulkan_render_pass_add_node                 (GskVulk
                                                                          GskRenderNode          *node);
 
 void                    gsk_vulkan_render_pass_upload                   (GskVulkanRenderPass    *self,
-                                                                         GskVulkanRender        *render);
+                                                                         GskVulkanRender        *render,
+                                                                         VkCommandBuffer         command_buffer);
 
 gsize                   gsk_vulkan_render_pass_count_vertices           (GskVulkanRenderPass    *self);
 gsize                   gsk_vulkan_render_pass_collect_vertices         (GskVulkanRenderPass    *self,
@@ -30,7 +31,8 @@ void                    gsk_vulkan_render_pass_update_descriptor_sets   (GskVulk
                                                                          VkDescriptorSet         descriptor_set,
                                                                          VkSampler               sampler);
 void                    gsk_vulkan_render_pass_draw                     (GskVulkanRenderPass    *self,
-                                                                         GskVulkanRender        *render);
+                                                                         GskVulkanRender        *render,
+                                                                         VkCommandBuffer         command_buffer);
 
 G_END_DECLS
 
index de4dc8065bdb2b7095051de9750994a6626018ef..55c454e0c1311eaa118851ab59339e6e260691e7 100644 (file)
@@ -12,24 +12,6 @@ G_BEGIN_DECLS
 typedef struct _GskVulkanRender GskVulkanRender;
 typedef struct _GskVulkanVertex GskVulkanVertex;
 
-struct _GskVulkanRender
-{
-  GskRenderer *renderer;
-  GdkVulkanContext *vulkan;
-
-  graphene_matrix_t mvp;
-  int scale_factor;
-  VkExtent2D size;
-  VkRect2D scissor;
-
-
-  VkCommandPool command_pool;
-  VkCommandBuffer command_buffer;
-
-  GSList *render_passes;
-  GSList *cleanup_images;
-};
-
 struct _GskVulkanVertex
 {
   float x;
@@ -43,6 +25,8 @@ GskVulkanRender *       gsk_vulkan_render_new                           (GskRend
                                                                          VkCommandPool           command_pool);
 void                    gsk_vulkan_render_free                          (GskVulkanRender        *self);
 
+GskRenderer *           gsk_vulkan_render_get_renderer                  (GskVulkanRender        *self);
+
 void                    gsk_vulkan_render_add_cleanup_image             (GskVulkanRender        *self,
                                                                          GskVulkanImage         *image);